#ifndef FILESAVE_H
#define FILESAVE_H

#include <iostream>
#include <fstream>
#include <string>
#include <filesystem>
#include "MyFileTools.h"
#include"Player.h"
#include"Shop.h"
#include"Monster.h"
#include"Treasure.h"
#include"Scene.h"
#include "Factory.h"
#include<unordered_map>
using namespace std;
const string userPath="./base/"; //玩家基本信息
const string monsterPath="./monster/"; //敌人基本信息
const string treasurePath="./treasure/"; //宝藏信息
const string bagPath="./bag/";//背包信息
// unordered_map<std::string,std::string> s_string {};
// unordered_map<std::string,std::string> n_string {};
// unordered_map<float,float> s_int{};
// unordered_map<float,float> n_int{};

void createFolder(const string& filePath);
void showMessage(const string& m);
class FileSave {
public:
    Player *p;//玩家信息
    Scene *s; //场景信息
    string userName;
    // 获取单例实例
    static FileSave &getInstance() {
        static FileSave instance; // 懒汉式单例
        return instance;
    }
    void savePlayer(const string& i);
    void saveMonster(const string& i);
    void saveTreasure(const string& i);
    void saveBag(const string& i);
    void readPlayer(const string& i);
    void readMonster(const string&i);
    void readTreasure(const string&i);
    void readBag(const string& i);


private:
    // 私有构造函数，确保外部不能实例化
    FileSave() = default;
    // 删除拷贝构造函数和赋值运算符，防止复制
    FileSave(const FileSave&) = delete;
    FileSave& operator=(const FileSave&) = delete;
};





#endif // FILESAVE_H